The invention pertains to the field of system administration in distributed systems of computers in an enterprise, and, more particularly to the field of software for assisting network managers to administer the system to insure that the number of copies of any particular licensed software application does not exceed the number of licenses for that application the enterprise currently holds.
Enterprise liability for copyright violations is a serious concern in enterprises with multiple computers. Typically, software applications are sold with licenses that grant permission for a predetermined number of copies of the software to be executed at any particular time. System administrators of networks in enterprises with multiple computers like to know that no more than a programmable number of copies of an application program are running at any particular time so that they can be sure that the number of copies of a licensed application program does not exceed the number of licensed copies. Administrators also like to know what applications are being run and how often they are being run for purposes of evaluating how many upgrades to buy, whether to buy upgrades etc.
When Novell NetWare was a dominant network transport layer protocol or network operating system and application programs were being launched off central file servers, the above stated problem was solved by workers in the art having the NetWare operating system report the launch of any application to a licensing process running on the central file server or elsewhere to get permission or denial for the launch. This approach had the problem that it was based on "hooks" in the NetWare operating system, i.e., there were built-in dependencies on the NetWare operating system software. Thus, the system did not work where the network was not a Novell NetWare system.
As people migrated to different network operating systems, a new approach was developed which was operating-system independent. In this system, the applications to be launched were cloaked in "wrappers". A wrapper is a software layer which intercepts a launch request, reports the launch request to the licensing management process in an active monitoring message, and then, if permission is granted for the launch, launches the requested application out of a hidden directory. The wrapper inserts itself into the directory where the application it wraps originally resided and moves the application to a hidden directory so that launch messages directed to the application are intercepted by the wrapper program. Wrappers are part of the prior art, but wrapper programs that generate messages that are coded as either active monitoring or passive monitoring messages are not part of the prior art as to the assignee of the present invention having been commercially released by the assignee as of the Jun. 21, 1996 software release.
Wrappers worked fine for awhile, but with the evolution of operating systems, new ways of launching applications continued to spring up. Each time a new way to launch an application appeared, the wrapper mechanism had to be redesigned usually to account for the new launch mechanism.
This became burdensome, so "agents" were developed. Agents are background daemons which monitor all activities on a desktop and report launches of all applications and other tasks to a licensing process running locally or remotely on another computer. The agent then receives authorization messages or denials from the licensing management process and kills the application if the launch is not within the terms of the license management policies encoded in the license management process.
As operating systems continued to develop and mixed platform networks with mixed operating systems started to appear (with some computers in the environment having operating systems for which wrapper programs did not exist), license management software products were developed which used a combination of wrappers and agents to monitor launches from either local hard drives or file servers elsewhere on the network. The assignee of the present invention has several predecessor products released prior to the release of the present version which implemented wrappers alone, agents alone, and combinations of wrappers and agents.
However, the emergence of the Windows NT.RTM. operating system caused the most recent predecessor product to fail since Windows NT works in such a way that prior agent designs did not work reliably when users logged on and logged off the shared machine running NT and, in addition, were impractical in that they consumed approximately 90% of the available computing resources just to run the agent process.
Further, Windows NT runs 16-bit programs by creating VDMs called virtual machines to fool 16-bit programs into thinking they are running alone on a Windows 3.1 machine. The VDMs were themselves 32-bit processes running under NT, but the agents available before the invention described herein, even if they somehow worked, could not tell the user ID and path of the 16-bit application running inside the VDM since the 32-bit agent could only detect the launch of the 32-bit VDM emulator process itself and could not determine which 16-bit applications were launched inside the VDM. This situation was unacceptable for a license management process which needed to have the user ID and path or identity of the application being executed for purposes of managing whether the process is licensed etc.
Thus, a need arose for a license management software product which could use a combination of wrappers and agents where the agents would work properly with the Windows NT operating system and could track the launching of either 32-bit applications or 16-bit applications launched within VDMs or shared VDMs.